// 检查登录状态和权限的脚本
const axios = require('axios');

// 设置axios默认配置
axios.defaults.baseURL = 'http://localhost:8080';
axios.defaults.withCredentials = true;

// 模拟登录获取token
async function loginAndTest() {
  console.log('=== 模拟登录流程 ===');
  
  try {
    // 首先获取验证码
    console.log('1. 获取验证码...');
    const captchaResponse = await axios.get('/captchaImage');
    console.log('验证码响应:', captchaResponse.data);
    
    // 模拟登录（需要验证码）
    console.log('2. 尝试登录...');
    const loginResponse = await axios.post('/login', {
      username: 'admin',
      password: 'admin123',
      code: '1234', // 默认验证码
      uuid: captchaResponse.data.uuid || 'test'
    });
    
    console.log('✅ 登录成功');
    console.log('登录响应:', loginResponse.data);
    
    // 获取登录后的cookie
    const cookies = loginResponse.headers['set-cookie'];
    console.log('获取到的Cookie:', cookies);
    
    // 使用cookie测试学生API
    console.log('3. 使用登录状态测试学生API...');
    const studentResponse = await axios.get('/system/student/list', {
      headers: {
        'Cookie': cookies.join('; ')
      }
    });
    
    console.log('✅ 学生API调用成功');
    console.log('学生数据:', JSON.stringify(studentResponse.data, null, 2));
    
  } catch (error) {
    console.error('❌ 登录或API调用失败:', error.message);
    if (error.response) {
      console.error('状态码:', error.response.status);
      console.error('响应数据:', error.response.data);
    }
  }
}

// 检查当前用户权限
async function checkUserPermissions() {
  console.log('\n=== 检查用户权限 ===');
  
  try {
    const { exec } = require('child_process');
    const command = 'mysql -u root -p123456 -e "USE ry-vue; SELECT u.user_name, r.role_name, m.menu_name, m.perms FROM sys_user u JOIN sys_user_role ur ON u.user_id = ur.user_id JOIN sys_role r ON ur.role_id = r.role_id JOIN sys_role_menu rm ON r.role_id = rm.role_id JOIN sys_menu m ON rm.menu_id = m.menu_id WHERE u.user_name = \'admin\' AND m.menu_id = 1066;"';
    
    exec(command, (error, stdout, stderr) => {
      if (error) {
        console.error('❌ 权限查询失败:', error.message);
        return;
      }
      console.log('✅ 权限查询成功');
      console.log('权限信息:', stdout);
    });
    
  } catch (error) {
    console.error('❌ 权限检查失败:', error.message);
  }
}

// 执行检查
async function runChecks() {
  console.log('开始检查登录状态和权限问题...\n');
  
  await loginAndTest();
  checkUserPermissions();
  
  console.log('\n=== 检查完成 ===');
}

runChecks();